// 引入utils/db.js文件；数据库文件
const db = require('../utils/db')
//连接数据库
// 创建集合约束字段，限制集合有哪些filed（申请专利，存档）构成，类型。（让传入数据库的字段都是字符串类型的）
const positionSchema = db.Schema({
    companyName: { type: String, required: true},//必须传入的字段并且是string，前面是公司名称的name
    positionName: { type: String, required: true },//职位名称
    city: { type: String, required: true },//工作地点
    salary: { type: String, required: true },//岗位薪资
    type: { type: String, required: true },//工作性质
    experience: { type: String, required: true },//工作经验
    degree: { type: String, required: true },//学历要求
    description: { type: String, required: true },//职位描述
    conpanyLoge:{ type:String }  //公司头像,前端不需要必须传,所以取消required:true
})

//创建集合（模型）
const Position = db.model('positions', positionSchema)

//添加职位信息
// mongodb的数据库操作都是异步的(那么在执行的时候,执行代码就不会等这个代码,直接返回undefined),,所以不能用这种写法
/* const save = function () {
    position.insertMary({
        //插入数据
        companyName: '青岛大酒店',//公司名字
        positionName: '五星级厨师',//职位名称
        city: '青岛',//工作地点
        salary: '10k',//岗位薪资
        type: '全职',//工作性质
        experience: '3年',//工作经验
        degree: '中专',//学历要求
        decription: 'this is a good chuzi'//职位描述
    }, err => {
        if (!err) {
            console.log('插入数据成功...')
        }
    })
} */
//职位不能是写死的,所以注释掉

const save = function(data){
    //用data来传输数据
    return Position.insertMany(data)//返回一个promise
    //用Position.insertMany向数据库内部传输数据
                    .then(res=>true)//成功返回then
                    .catch(err=>false)//失败就返回catch
}
//查询所有的职位信息
const find = function(){
    return Position.find()
    //返回调用的数据数据模型层之中的方法
}

const findById = function(id){
    return Position.findById(id)
}

const update = function(id,data){
    return Position.findByIdAndUpdate(id,data)//返回一个promise
    //根据id更新(id ,对象)
    //用Position.insertMany向数据库内部传输数据
                    .then(res=>true)//成功返回then
                    .catch(err=>false)//失败就返回catch
}
module.exports = {
    save,find,findById,update
}